package com.elitel.frame.base.service;

import com.elitel.frame.main.entity.BaseQueryfieldcache;
import com.elitel.frame.main.entity.ext.BaseQueryfieldcacheExt;

import java.util.List;
import java.util.Map;

public interface BaseQueryfieldcacheService {
    /**
     * 根据serviceid和servicetype查询缓存条件组（组）
     * @param serviceid
     * @param servicetype
     * @return
     */
    List<BaseQueryfieldcacheExt> queryCacheFieldGroup(String serviceid, String servicetype);

    /**
     * 根据serviceid和servicetype和参数组查询缓存参数和值
     * @param serviceid
     * @param servicetype
     * @param parametergroup
     * @return
     */
    List<BaseQueryfieldcacheExt> queryCacheFieldByServiceIdGroupId(String serviceid, String servicetype, String parametergroup);

    /**
     * 添加缓存字段和值
     * @param list
     * @return
     */
    Integer addQueryFieldCacheList(List<BaseQueryfieldcache> list);

    /**
     *  删除缓存配置信息
     * @param serviceid
     * @param parametergroup
     * @return
     */
    Integer deleteQueryFieldCacheList(String serviceid, String parametergroup);

    /**
     * 修改缓存配置信息
     * @param list
     * @return
     */
    Integer updateQueryFieldCacheList(List<BaseQueryfieldcache> list);

    /**
     * 查询缓存条件组(如果serviceId serviceType groupId均为空 则查询所有的) 组概念 以组为单位
     * @return
     */
    List<BaseQueryfieldcacheExt> queryAllFieldCacheGroup(String serviceId, String serviceType, String groupId);

    /**
     * 根据主键查询
     * @param guid
     * @return
     */
    BaseQueryfieldcacheExt getQueryFieldCacheByGuid(String guid);

    /**
     * 根据服务ID和服务类型查询服务缓存字段配置信息（暂只支持单表）
     * @param serviceId
     * @param serviceType
     * @return
     */
    List<Map<String,Object>> getQueryFieldCacheConfigByServiceId(String serviceId, String serviceType);

    /**
     * 上传缓存配置信息
     * @param list
     * @return
     */
    Map<String,Object> updateImportFieldCacheInfo(String pcode, String serviceId, String serviceType, List<Map<String, Object>> list);
}
